package cn.xspace.wnx.data;

import java.util.List;

import cn.xspace.chatui.bean.MessageEntity;
import rx.Observable;

/**
 * Created by liuchen on 2016/10/20.
 */

public interface IMessageData {
    /**
     * 插入或者更新列表
     */
    public Observable<String> updateMessageList(MessageEntity entity);

    /**
     * 插入或者更新列表已读减一的时候
     */
    public Observable<String> updateMessageListReduce(MessageEntity entity);


    /**
     * 删除聊天，单聊
     */
    public Observable<String> deleteSingleChat(String sendId);


    /**
     * 删除群聊
     */
    public Observable<String> deleteGroupChat(String groupId);

    /**
     * 更新未读状态
     */
    public Observable<String> updateUnreadStatus(String id, int chatType);

    /**
     * 置顶某条消息
     */
    public Observable<String> topChatMessage(String id, int chatType);

    /**
     * 取消置顶
     *
     * @param id
     * @param chatType
     * @return
     */
    public Observable<String> cancelTopChatMessage(String id, int chatType);

    /**
     * 获取列表
     */
    /**
     * 获取消息记录列表
     */
    Observable<List<MessageEntity>> getMessageList();

    /**
     * 获取群组记录列表
     * @return
     */
    Observable<List<MessageEntity>> getGroupList();


    /**
     * @param id
     * @param chatType
     * @param status
     * @return
     */
    Observable<String> updateMessageWarnStatus(String id, int chatType, int status);


//    /**
//     * 获取通告
//     */
//    Observable<List<MessageEntity>> getNoticeList();
//    /**
//     * 获取WNX
//     */
//    Observable<List<MessageEntity>> getWNXList();


    /**
     * 修改某条会话的信息发送状态
     *
     * @param senderId
     * @param status
     */
    Observable<String> updateMessageEntityStatus(String senderId, int status, int chatType);


    Observable<String> updateMessageLastTime(String senderId, String time, int chatType);

    /**
     * 根据id获取消息列表实体
     *
     * @param senderId
     * @return
     */
    Observable<MessageEntity> getMessageEntityByKeyId(String senderId, int chatType);

    /**
     * 修改群组名称
     *
     * @param groupId
     * @param name
     * @return
     */
    Observable<String> updateGroupName(String groupId, String name);


//    /**
//     * 插入或者更新单聊
//     */
//    public void insertUpdate(MessageEntity messageEntity) {
//
//    }
//
//    /**
//     * 插入或者更新群聊
//     */
//    /**
//     * 插入或者更新微农信息或者公告
//     */
}
